package com.pan.operation.dyproxy.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class SecretaryHelper implements InvocationHandler {

    Object secretary;  // 被代理的对象，实际的方法执行者

    /**
     * boss的事情一般会交给秘书执行
     * @param secretary
     */
    public SecretaryHelper(Object secretary) {
        this.secretary = secretary;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        before();

        System.out.println("method:"+method.toString());
        Object result = method.invoke(secretary, args);  // 调用 target 的 method 方法

        after();
        return result;  // 返回方法的执行结果
    }

    // 调用invoke方法之前执行
    private void before() {
        System.out.println("执行方法前····");
    }

    // 调用invoke方法之后执行
    private void after() {
        System.out.println("执行方法后····");
    }
}
